package operation;

import Dao.MilkDao;
import interfac.MilkTeaOperation;
import pojo.MilkTeaProduct;

import java.util.List;
import java.util.Scanner;

public class UpdateMilkTeaOperation implements MilkTeaOperation {
    @Override
    public void execute(Scanner scanner) {
        show_milk_tea(); // 显示所有奶茶，以便用户选择要修改的产品
        System.out.println("请输入要修改的奶茶产品ID:");
        int productIdToUpdate = scanner.nextInt();

        MilkDao milk_dao = new MilkDao();
        MilkTeaProduct existingProduct = milk_dao.getProductById(productIdToUpdate);

        if (existingProduct != null) {
            System.out.println("当前奶茶信息如下：");
            System.out.println(existingProduct);

            // 提供选项让用户选择具体要修改的信息
            System.out.println("请选择要修改的信息：1. 名称 2. 销售价 3. 进价 4. 库存数量 5. 描述 6. 全部");
            String choice = scanner.next();
            switch (choice) {
                case "1":
                    System.out.println("请输入新的奶茶名称:");
                    String newName = scanner.next();
                    existingProduct.setProduct_name(newName);
                    break;
                case "2":
                    System.out.println("请输入新的销售价格:");
                    double newPrice = scanner.nextDouble();
                    if (newPrice > 0) {
                        existingProduct.setPrice(newPrice);
                    } else {
                        System.out.println("销售价格必须为正数，请重新输入。");
                        return; // 返回以避免后续操作
                    }
                    break;
                case "3":
                    System.out.println("请输入新的进价:");
                    double newInprice = scanner.nextDouble();
                    if (newInprice >= 0) {
                        existingProduct.setInprice(newInprice);
                    } else {
                        System.out.println("进价不能为负数，请重新输入。");
                        return; // 返回以避免后续操作
                    }
                    break;
                case "4":
                    System.out.println("请输入新的库存数量:");
                    int newStock = scanner.nextInt();
                    if (newStock >= 0) {
                        existingProduct.setStock(newStock);
                    } else {
                        System.out.println("库存数量不能为负数，请重新输入。");
                        return; // 返回以避免后续操作
                    }
                    break;
                case "5":
                    System.out.println("请输入新的描述:");
                    scanner.nextLine(); // 清除之前的换行符
                    String newDescription = scanner.nextLine();
                    existingProduct.setDescription(newDescription);
                    break;
                case "6":
                    System.out.println("请输入新的奶茶名称:");
                    String fullName = scanner.next();
                    System.out.println("请输入新的销售价格:");
                    double fullPrice = scanner.nextDouble();
                    if (fullPrice <= 0) {
                        System.out.println("销售价格必须为正数，请重新输入。");
                        return;
                    }
                    System.out.println("请输入新的进价:");
                    double fullInprice = scanner.nextDouble();
                    if (fullInprice < 0) {
                        System.out.println("进价不能为负数，请重新输入。");
                        return;
                    }
                    System.out.println("请输入新的库存数量:");
                    int fullStock = scanner.nextInt();
                    if (fullStock < 0) {
                        System.out.println("库存数量不能为负数，请重新输入。");
                        return;
                    }
                    scanner.nextLine(); // 清除之前的换行符
                    System.out.println("请输入新的描述:");
                    String fullDescription = scanner.nextLine();
                    existingProduct.setProduct_name(fullName);
                    existingProduct.setPrice(fullPrice);
                    existingProduct.setInprice(fullInprice);
                    existingProduct.setStock(fullStock);
                    existingProduct.setDescription(fullDescription);
                    break;
                default:
                    System.out.println("无效的选择，请重新输入。");
                    return; // 返回以避免后续操作
            }

            // 确认是否真的要更新此产品信息
            System.out.println("确认要更新 " + existingProduct.getProduct_name() + " 的信息吗？(y/n)");
            String confirmation = scanner.next();
            if ("y".equalsIgnoreCase(confirmation)) {
                milk_dao.updateProduct(existingProduct);
                System.out.println("奶茶信息已成功更新");
            } else {
                System.out.println("取消更新操作");
            }
        } else {
            System.out.println("输入的产品ID不存在，请检查后重新输入。");
        }
    }

    private static void show_milk_tea() {
        MilkDao milk_dao = new MilkDao();
        List<MilkTeaProduct> allProducts = milk_dao.getProducts();
        System.out.println("以下是店里的奶茶产品：");
        for (MilkTeaProduct product : allProducts) {
            System.out.println(product.getProduct_id() + " - " + product.getProduct_name() + "，价格：" + product.getPrice() + "，库存：" + product.getStock());
        }
    }
}
